// 在一个给定的数组nums中，总是存在一个最大元素 。

// 查找数组中的最大元素是否至少是数组中每个其他数字的两倍。

// 如果是，则返回最大元素的索引，否则返回-1。

// 示例 1:

// 输入: nums = [3, 6, 1, 0]
// 输出: 1
// 解释: 6是最大的整数, 对于数组中的其他整数,
// 6大于数组中其他元素的两倍。6的索引是1, 所以我们返回1.
 

// 示例 2:

// 输入: nums = [1, 2, 3, 4]
// 输出: -1
// 解释: 4没有超过3的两倍大, 所以我们返回 -1.
 

// 提示:

// nums 的长度范围在[1, 50].
// 每个 nums[i] 的整数范围在 [0, 99].

#include <vector>

using namespace std;

// 找最大的两个数
// 不用除法，防止出现除数为0的情况
// 用减法
class Solution {
public:
    int dominantIndex(vector<int>& nums) {
        int max = -1;
        int second = -1;
        int res = 0;
        int n = nums.size();
        for (int i = 0; i < n; ++i) {
            if (nums[i] > max) {
                second = max;
                max = nums[i];
                res = i;
            } else if (nums[i] > second) {
                second = nums[i];
            }
        }
        return (max - second >= second) ? res : -1;
    }
};

class Solution {
public:
    int dominantIndex(vector<int>& nums) {
        int firstNum{-1};
        int secondNum{-1};
        int firstIndex{-1};
        int n = nums.size();
        for (int i{0}; i < n; ++i) {
            if (nums[i] > firstNum) {
                secondNum = firstNum;
                firstNum = nums[i];
                firstIndex = i;
            } else if (nums[i] > secondNum) {
                secondNum = nums[i];
            }
        }
        return firstNum >= 2 * secondNum ? firstIndex : -1;
    }
};
